<?php
//------------------------------------------------------------------------------
// Class              : ModelBase
// Modification       :
//------------------------------------------------------------------------------
// Date(yyyy.mm.dd)   Developer                       Action
//------------------------------------------------------------------------------
// 2007.03.05         ThanhTX                      Created
//------------------------------------------------------------------------------
// 2007.03.08         Tran Thanh                      Update
//------------------------------------------------------------------------------
// 2007.06.01         ThanhTX                      Update
//------------------------------------------------------------------------------
// 2007.06.14         ThanhTX                      Update
//------------------------------------------------------------------------------

class ModelBase{
	var $db;
	var $tableName 	="tableName";
	var $keyField	="id";
	//==========================================================================
	// Function    : ModelBase
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.03
	// Details     : AppendData record of table
	//==========================================================================
	function ModelBase(&$database){
	   	 $this->db = new MySql();
		 $this->db = $database;
	}
	//==========================================================================
 	// Function    : getAll
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.05.02
	// Details     : AppendData record of table
	//==========================================================================
	function getAll($listField="*",$condition=""){
		$sql = "SELECT $listField FROM  " . $this->tableName . "  $condition";
		//global $db;
		return $this->db->retrieve($sql);
	}
	//==========================================================================
	// Function    : getByWhere
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function getByWhere($listField,$where="",$order=""){
		if ($where==""){
			$sql = "SELECT $listField  FROM $this->tableName  ";
		}else{
  			$sql = "SELECT $listField  FROM $this->tableName  WHERE $where ";
		}
		if ($order !=""){
			$sql .= " Order by $order";
		}
		//global $db;
		//echo($sql);
		return $this->db->retrieve($sql);
	}
	//==========================================================================
	// Function    : getFirstByWhere
	// Argument    :
	// ReturnValue :
	// Creator     : NgocVQ 2007.09.25
	// Details     : 
	//==========================================================================
	function getFirstByWhere($listField,$where="",$order=""){
		if ($where==""){
			$sql = "SELECT $listField  FROM $this->tableName  ";
		}else{
  			$sql = "SELECT $listField  FROM $this->tableName  WHERE $where ";
		}
		if ($order !=""){
			$sql .= " Order by $order";
		}
		//global $db;
		//echo $sql;
		return $this->db->getFirstRecord($sql);
	}
		
	//==========================================================================
	// Function    : getByIdHome
	// Argument    :
	// ReturnValue :
	// Creator     :Tran Thanh 2007.03.09
	// Details     : AppendData record of table
	//==========================================================================
	function getByIdHome($id,$listField="*"){
		$sql = "SELECT $listField  FROM $this->tableName  WHERE $this->keyField =$id and shows=1 ";
		return $this->db->getFirstRecord($sql);
	}
	//==========================================================================
	// Function    : getByWhereSISTINTC
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function getByWhereDistinct($listField,$where="",$order=""){
		if ($where==""){
			$sql = "SELECT DISTINCT $listField  FROM $this->tableName  ";
		}else{
  			$sql = "SELECT DISTINCT $listField  FROM $this->tableName  WHERE $where ";
		}
		if ($order !=""){
			$sql .= " Order by $order";
		}
		//global $db;
		return $this->db->retrieve($sql);
	}
	//==========================================================================
	// Function    : getByWhereGroup
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function getByWhereGroup($listField,$where="",$group=""){
		if ($where==""){
			$sql = "SELECT $listField  FROM $this->tableName  ";
		}else{
  			$sql = "SELECT $listField  FROM $this->tableName  WHERE $where ";
		}
		if ($group !=""){
			$sql .= " Group by $group";
		}
		//global $db;
		return $this->db->retrieve($sql);
	}

	//==========================================================================
	// Function    : getById
	// Argument    :
	// ReturnValue :
	// Creator     :Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function getById($id,$listField="*",$condition =""){
		$sql = "SELECT $listField  FROM $this->tableName  WHERE $this->keyField =$id  $condition";
		
		return $this->db->getFirstRecord($sql);
	}
	//==========================================================================
	// Function    : getById2
	// Argument    :
	// ReturnValue :
	// Creator     :Tran Thanh 2007.03.09
	// Details     : AppendData record of table
	//==========================================================================
	function getById2($id,$listField="*"){
		$sql = "SELECT $listField  FROM $this->tableName  WHERE $this->keyField =$id";
		return $this->db->getFirstRecord($sql);
	}

	//==========================================================================
	// Function    : getBy
	// Argument    :
	// ReturnValue :
	// Creator     :Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function getBySql($sql){		
		return $this->db->retrieve($sql);
	}


	//==========================================================================
	// Function    : exist
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function exist($id){
         echo "exist not define.";
		//$sql = "DELETE * FROM  WHERE ".$this->$keyField ."=". $id ;
		//return $this->db->query($sql);
	}

	//==========================================================================
	// Function    : deleteAll
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function deleteAll(){

		$sql = "DELETE  FROM  $this->tableName ";
		//global $db;
		return $this->db->query($sql);
	}
	//==========================================================================
	// Function    : deleteWhere 
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function deleteWhere($where=""){
  		$sql = "DELETE FROM $this->tableName  WHERE $where ";
		//global $db;
		return $this->db->retrieve($sql);
	}
	//==========================================================================
	// Function    : deleteById
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function deleteById($id){
		$sql = "DELETE FROM $this->tableName WHERE $this->keyField=$id ";
		return $this->db->query($sql);
	}
	//==========================================================================
	// Function    : insert
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.03.09
	// Details     : AppendData record of table
	//==========================================================================
	function insert(&$arrayData){
         echo "insert not define.";
	}

	function update($listUpdate,$condition="1=1"){
        // echo "update not define.";
		$sql = "UPDATE $this->tableName SET  $listUpdate  WHERE ".$condition;
		//echo $sql;
		return $this->db->query($sql);
	}

	//==========================================================================
	// Function    : errno
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function errno(){
		return $this->db->errno();
	}
	//==========================================================================
	// Function    : error
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.06.02
	// Details     : AppendData record of table
	//==========================================================================
	function error(){
		return $this->db->error();
	}
	//==========================================================================
	// Function    : getByWhereLimit40
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.03.09
	// Details     : AppendData record of table
	//==========================================================================
	function getByWhereLimit40($listField,$where="",$order=""){
		if ($where==""){
			$sql = "SELECT $listField  FROM $this->tableName  ";
		}else{
  			$sql = "SELECT $listField  FROM $this->tableName  WHERE $where ";
		}
		if ($order !=""){
			$sql .= " Order by $order";
		}
		if ($order !=""){
			$sql .= " limit 1,40";
		}
		//global $db;
		return $this->db->retrieve($sql);
	}
	//==========================================================================
	// Function    : getByWhereLimit5
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.03.09
	// Details     : AppendData record of table
	//==========================================================================
	function getByWhereLimit5($listField,$where="",$order=""){
		if ($where==""){
			$sql = "SELECT $listField  FROM $this->tableName  ";
		}else{
  			$sql = "SELECT $listField  FROM $this->tableName  WHERE $where ";
		}
		if ($order !=""){
			$sql .= " Order by $order";
		}
		if ($order !=""){
			$sql .= " limit 1,5";
		}
		//global $db;
		return $this->db->retrieve($sql);
	}
	//==========================================================================
	// Function    : getByWhereLimit40
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.03.09
	// Details     : AppendData record of table
	//==========================================================================
	function getByWhereLimit($listField,$where="",$order="",$limit=""){
		if ($where==""){
			$sql = "SELECT $listField  FROM $this->tableName  ";
		}else{
  			$sql = "SELECT $listField  FROM $this->tableName  WHERE $where ";
		}
		if ($order !=""){
			$sql .= " Order by $order";
		}
		if ($limit !=""){
			$sql .= " limit $limit";
		}
		//echo $sql;
		return $this->db->retrieve($sql);
	}
	//==========================================================================
	// Function    : getByWhereLimit10
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.03.09
	// Details     : AppendData record of table
	//==========================================================================
	function getByWhereLimit10($listField,$where="",$order=""){
		if ($where==""){
			$sql = "SELECT $listField  FROM $this->tableName  ";
		}else{
  			$sql = "SELECT $listField  FROM $this->tableName  WHERE $where ";
		}
		if ($order !=""){
			$sql .= " Order by $order";
		}
		if ($order !=""){
			$sql .= " limit 1,10";
		}
		//global $db;
		return $this->db->retrieve($sql);
	}
	//==========================================================================
	// Function    : getByWhereLimit10
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.03.09
	// Details     : AppendData record of table
	//==========================================================================
	function getByWhereLimit9($listField,$where="",$order=""){
		if ($where==""){
			$sql = "SELECT $listField  FROM $this->tableName  ";
		}else{
  			$sql = "SELECT $listField  FROM $this->tableName  WHERE $where ";
		}
		if ($order !=""){
			$sql .= " Order by $order";
		}
		if ($order !=""){
			$sql .= " limit 1,9";
		}
		//global $db;
		return $this->db->retrieve($sql);
	}
	//==========================================================================
	// Function    :  updateSoLanXem
	// Argument    :
	// ReturnValue :
	// Creator     : Tran Thanh 2007.03.09
	// Details     : AppendData record of table
	//==========================================================================
	function updateSoLanXem($id){
		$sql = "UPDATE $this->tableName SET so_lan_xem = so_lan_xem + 1  WHERE ".$this->keyField ."=". $id ;
		return $this->db->query($sql);
	}
	function updateHits($id){
		$sql = "UPDATE $this->tableName SET hits = hits + 1  WHERE ".$this->keyField ."=". $id ;
		return $this->db->query($sql);
	}
	//==========================================================================
	// Function    :  replaceString(str)
	// Description :  Replace ' in the string by '' when insert or update data
	// Argument    :
	// ReturnValue :
	// Creator     : QuynhTTN 2007.09.26
	// Details     : 
	//==========================================================================
	function replaceString($strReplace){
		//Khi chay tren may CLIENT thi bo commenthien thi dong phia duoi nay;
		//if(RUN_ON_HOST_INTERNET=="false"){
			$strResult=str_replace("\'","''",$strReplace); 
		//}
		//else{
			//Khi upload len SERVER thi bo comment va hient thi dong phia duoi nay.				
			//$strResult=str_replace("'","''",$strReplace); 
		//}
		//die($strResult);
		return $strResult;
	}
	//==========================================================================
    // Function    : updateKoukai
    // Creator     : ThanhTX 2007.06.14
    // Details     : Update koukai
    //==========================================================================
    function updateKoukai(&$arrayData)
	{	
		$arrayId = $arrayData["id"];
		$i=0;
		$sql="";
		if( ! is_array($arrayId )) return;
		
		foreach($arrayId as $row){			
			$koukai = $arrayData["koukai".$row];
			$sql = "UPDATE  ".$this->tableName." SET ";
			if ($koukai==1)
			{
				$sql .= "koukai=1";                  
			}else{
				$sql .= "koukai=0";
			}
			$sql .= (" WHERE $this->keyField=".$row);
			$this->db->query($sql);
			$i++;
		}
    }     

}

?>